#ifndef _THREAD_POOL_H
#define _THREAD_POOL_H

// 线程池对象
typedef struct threadpool_s threadpool_t;

// 线程执行函数的函数指针,通过args上下文参数处理数据
typedef void (*handler_ptr)(void *args);

#ifdef __cplusplus
extern "C"
{
#endif
    // 创造线程池
    threadpool_t *threadpool_create(int thread_count);

    // 暂停线程池
    void threadpool_terminate(threadpool_t *pool);

    // 让任务func和参数args交给线程池poll执行
    int threadpool_post(threadpool_t *pool, handler_ptr func, void *args);

    // 测试，让所有线程安全退出
    void threadpool_waitdown(threadpool_t *pool);
#ifdef __cplusplus
}
#endif

#endif